package com.cly.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cly.dto.ResumeDto;
import com.cly.dto.ResumeInsertDto;
import com.cly.entity.Resume;
import com.cly.result.JsonRequest;
import com.cly.vo.PostSubmitVo;
import com.cly.vo.ResumeOneVo;
import com.cly.vo.ResumeSubmitVo;

import java.util.List;

/**
 * 简历 服务类
 *
 * @author by 春风能解释
 * <p>
 * 2024/11/9
 */
public interface IResumeService extends IService<Resume> {

    /**
     * 查看一个简历
     *
     * @param id ID
     * @return JSON
     */
    JsonRequest<ResumeOneVo> lookOneResume(Long id);

    /**
     * 查看用户的简历列表
     *
     * @param current 页码
     * @param size    页长
     * @param userId  用户ID
     * @return JSON
     */
    JsonRequest<List<Resume>> lookResumeList(Integer current, Integer size, Long userId);

    /**
     * 新增一个简历
     *
     * @param reservationInsertDto 简历实体
     * @return JSON
     */
    JsonRequest<Boolean> addOneResume(ResumeInsertDto reservationInsertDto);

    /**
     * 删除一个简历
     *
     * @param id ID
     * @return JSON
     */
    JsonRequest<Integer> deleteResume(Long id);

    /**
     * 修改一个简历
     *
     * @param reservationInsertDto 简历实体
     * @return JSON
     */
    JsonRequest<Boolean> updateResume(ResumeInsertDto reservationInsertDto);

    /**
     * 提交简历
     *
     * @param resumeId 简历ID
     * @param postId   岗位ID
     * @return JSON
     */
    JsonRequest<Boolean> submitResume(Long resumeId, Long postId);

    /**
     * 查看已投递的岗位列表
     *
     * @param userId  用户ID
     * @param current 页码
     * @param size    页长
     * @return JSON
     */
    JsonRequest<List<PostSubmitVo>> lookPostList(Integer current, Integer size, Long userId);

    /**
     * 查看已投递的简历列表
     *
     * @param resumeDto 岗位条件
     * @param current   页码
     * @param size      页长
     * @return JSON
     */
    JsonRequest<List<ResumeSubmitVo>> lookResume(Integer current, Integer size, ResumeDto resumeDto);

    /**
     * 修改简历投递状态
     *
     * @param resumeDto 投递实体
     * @return JSON
     */
    JsonRequest<Boolean> updateSubmitResume(ResumeDto resumeDto);
}
